#encoding: utf-8

module FormSelectOptions

  module LanguageOptions

    def self.native_name_to_native_name
      get_select_options(:native, :native)
    end

    def self.english_name_to_english_name
      get_select_options(:name, :name)
    end

    def self.code_to_english_name
      get_select_options(:code, :name)
    end

    def self.code_to_native_name
      get_select_options(:code, :native)
    end

    private
    def self.get_select_options(first_key, last_key)
      options = []
      FormSelectOptions.language_families.each do |family|
        family.values.each do |values|
          values.each { |v| options << [v[first_key], v[last_key]] }
        end
      end
      options
    end

  end

  module CountryOptions

    # ISO 3166-1 alpha-2 code
    def self.code_to_english_country_name
      get_select_options(:code, :name)
    end

    def self.english_country_name_to_code
      get_select_options(:name, :code)
    end
    
    def self.english_country_name_to_english_country_name
      get_select_options(:name, :name)
    end

    private

    def self.get_select_options(first_key, last_key)
      FormSelectOptions.get_alpha_two_countries.map do |country|
        [country[first_key], country[last_key]]
      end
    end

  end

  def self.get_alpha_two_countries
    [
      {code: "AD",  name: "Andorra"},
      {code: "AE",  name: "United Arab Emirates"},
      {code: "AF",  name: "Afghanistan"},
      {code: "AG",  name: "Antigua and Barbuda"},
      {code: "AI",  name: "Anguilla"},
      {code: "AL",  name: "Albania"},
      {code: "AM",  name: "Armenia"},
      {code: "AO",  name: "Angola"},
      {code: "AQ",  name: "Antarctica"},
      {code: "AR",  name: "Argentina"},
      {code: "AS",  name: "American Samoa"},
      {code: "AT",  name: "Austria"},
      {code: "AU",  name: "Australia"},
      {code: "AW",  name: "Aruba"},
      {code: "AX",  name: "Åland Islands"},
      {code: "AZ",  name: "Azerbaijan"},
      {code: "BA",  name: "Bosnia and Herzegovina"},
      {code: "BB",  name: "Barbados"},
      {code: "BD",  name: "Bangladesh"},
      {code: "BE",  name: "Belgium"},
      {code: "BF",  name: "Burkina Faso"},
      {code: "BG",  name: "Bulgaria"},
      {code: "BH",  name: "Bahrain"},
      {code: "BI",  name: "Burundi"},
      {code: "BJ",  name: "Benin"},
      {code: "BL",  name: "Saint Barthélemy"},
      {code: "BM",  name: "Bermuda"},
      {code: "BN",  name: "Brunei Darussalam"},
      {code: "BO",  name: "Bolivia, Plurinational State of"},
      {code: "BQ",  name: "Bonaire, Sint Eustatius and Saba"},
      {code: "BR",  name: "Brazil"},
      {code: "BS",  name: "Bahamas"},
      {code: "BT",  name: "Bhutan"},
      {code: "BV",  name: "Bouvet Island"},
      {code: "BW",  name: "Botswana"},
      {code: "BY",  name: "Belarus"},
      {code: "BZ",  name: "Belize"},
      {code: "CA",  name: "Canada"},
      {code: "CC",  name: "Cocos (Keeling) Islands"},
      {code: "CD",  name: "Congo, the Democratic Republic of the"},
      {code: "CF",  name: "Central African Republic"},
      {code: "CG",  name: "Congo"},
      {code: "CH",  name: "Switzerland"},
      {code: "CI",  name: "Côte d'Ivoire"},
      {code: "CK",  name: "Cook Islands"},
      {code: "CL",  name: "Chile"},
      {code: "CM",  name: "Cameroon"},
      {code: "CN",  name: "China"},
      {code: "CO",  name: "Colombia"},
      {code: "CR",  name: "Costa Rica"},
      {code: "CU",  name: "Cuba"},
      {code: "CV",  name: "Cape Verde"},
      {code: "CW",  name: "Curaçao"},
      {code: "CX",  name: "Christmas Island"},
      {code: "CY",  name: "Cyprus"},
      {code: "CZ",  name: "Czech Republic"},
      {code: "DE",  name: "Germany"},
      {code: "DJ",  name: "Djibouti"},
      {code: "DK",  name: "Denmark"},
      {code: "DM",  name: "Dominica"},
      {code: "DO",  name: "Dominican Republic"},
      {code: "DZ",  name: "Algeria"},
      {code: "EC",  name: "Ecuador"},
      {code: "EE",  name: "Estonia"},
      {code: "EG",  name: "Egypt"},
      {code: "EH",  name: "Western Sahara"},
      {code: "ER",  name: "Eritrea"},
      {code: "ES",  name: "Spain"},
      {code: "ET",  name: "Ethiopia"},
      {code: "FI",  name: "Finland"},
      {code: "FJ",  name: "Fiji"},
      {code: "FK",  name: "Falkland Islands (Malvinas)"},
      {code: "FM",  name: "Micronesia, Federated States of"},
      {code: "FO",  name: "Faroe Islands"},
      {code: "FR",  name: "France"},
      {code: "GA",  name: "Gabon"},
      {code: "GB",  name: "United Kingdom"},
      {code: "GD",  name: "Grenada"},
      {code: "GE",  name: "Georgia"},
      {code: "GF",  name: "French Guiana"},
      {code: "GG",  name: "Guernsey"},
      {code: "GH",  name: "Ghana"},
      {code: "GI",  name: "Gibraltar"},
      {code: "GL",  name: "Greenland"},
      {code: "GM",  name: "Gambia"},
      {code: "GN",  name: "Guinea"},
      {code: "GP",  name: "Guadeloupe"},
      {code: "GQ",  name: "Equatorial Guinea"},
      {code: "GR",  name: "Greece"},
      {code: "GS",  name: "South Georgia and the South Sandwich Islands"},
      {code: "GT",  name: "Guatemala"},
      {code: "GU",  name: "Guam"},
      {code: "GW",  name: "Guinea-Bissau"},
      {code: "GY",  name: "Guyana"},
      {code: "HK",  name: "Hong Kong"},
      {code: "HM",  name: "Heard Island and McDonald Islands"},
      {code: "HN",  name: "Honduras"},
      {code: "HR",  name: "Croatia"},
      {code: "HT",  name: "Haiti"},
      {code: "HU",  name: "Hungary"},
      {code: "ID",  name: "Indonesia"},
      {code: "IE",  name: "Ireland"},
      {code: "IL",  name: "Israel"},
      {code: "IM",  name: "Isle of Man"},
      {code: "IN",  name: "India"},
      {code: "IO",  name: "British Indian Ocean Territory"},
      {code: "IQ",  name: "Iraq"},
      {code: "IR",  name: "Iran, Islamic Republic of"},
      {code: "IS",  name: "Iceland"},
      {code: "IT",  name: "Italy"},
      {code: "JE",  name: "Jersey"},
      {code: "JM",  name: "Jamaica"},
      {code: "JO",  name: "Jordan"},
      {code: "JP",  name: "Japan"},
      {code: "KE",  name: "Kenya"},
      {code: "KG",  name: "Kyrgyzstan"},
      {code: "KH",  name: "Cambodia"},
      {code: "KI",  name: "Kiribati"},
      {code: "KM",  name: "Comoros"},
      {code: "KN",  name: "Saint Kitts and Nevis"},
      {code: "KP",  name: "Korea, Democratic People's Republic of"},
      {code: "KR",  name: "Korea, Republic of"},
      {code: "KW",  name: "Kuwait"},
      {code: "KY",  name: "Cayman Islands"},
      {code: "KZ",  name: "Kazakhstan"},
      {code: "LA",  name: "Lao People's Democratic Republic"},
      {code: "LB",  name: "Lebanon"},
      {code: "LC",  name: "Saint Lucia"},
      {code: "LI",  name: "Liechtenstein"},
      {code: "LK",  name: "Sri Lanka"},
      {code: "LR",  name: "Liberia"},
      {code: "LS",  name: "Lesotho"},
      {code: "LT",  name: "Lithuania"},
      {code: "LU",  name: "Luxembourg"},
      {code: "LV",  name: "Latvia"},
      {code: "LY",  name: "Libya"},
      {code: "MA",  name: "Morocco"},
      {code: "MC",  name: "Monaco"},
      {code: "MD",  name: "Moldova, Republic of"},
      {code: "ME",  name: "Montenegro"},
      {code: "MF",  name: "Saint Martin (French part)"},
      {code: "MG",  name: "Madagascar"},
      {code: "MH",  name: "Marshall Islands"},
      {code: "MK",  name: "Macedonia, the former Yugoslav Republic of"},
      {code: "ML",  name: "Mali"},
      {code: "MM",  name: "Myanmar"},
      {code: "MN",  name: "Mongolia"},
      {code: "MO",  name: "Macao"},
      {code: "MP",  name: "Northern Mariana Islands"},
      {code: "MQ",  name: "Martinique"},
      {code: "MR",  name: "Mauritania"},
      {code: "MS",  name: "Montserrat"},
      {code: "MT",  name: "Malta"},
      {code: "MU",  name: "Mauritius"},
      {code: "MV",  name: "Maldives"},
      {code: "MW",  name: "Malawi"},
      {code: "MX",  name: "Mexico"},
      {code: "MY",  name: "Malaysia"},
      {code: "MZ",  name: "Mozambique"},
      {code: "NA",  name: "Namibia"},
      {code: "NC",  name: "New Caledonia"},
      {code: "NE",  name: "Niger"},
      {code: "NF",  name: "Norfolk Island"},
      {code: "NG",  name: "Nigeria"},
      {code: "NI",  name: "Nicaragua"},
      {code: "NL",  name: "Netherlands"},
      {code: "NO",  name: "Norway"},
      {code: "NP",  name: "Nepal"},
      {code: "NR",  name: "Nauru"},
      {code: "NU",  name: "Niue"},
      {code: "NZ",  name: "New Zealand"},
      {code: "OM",  name: "Oman"},
      {code: "PA",  name: "Panama"},
      {code: "PE",  name: "Peru"},
      {code: "PF",  name: "French Polynesia"},
      {code: "PG",  name: "Papua New Guinea"},
      {code: "PH",  name: "Philippines"},
      {code: "PK",  name: "Pakistan"},
      {code: "PL",  name: "Poland"},
      {code: "PM",  name: "Saint Pierre and Miquelon"},
      {code: "PN",  name: "Pitcairn"},
      {code: "PR",  name: "Puerto Rico"},
      {code: "PS",  name: "Palestine, State of"},
      {code: "PT",  name: "Portugal"},
      {code: "PW",  name: "Palau"},
      {code: "PY",  name: "Paraguay"},
      {code: "QA",  name: "Qatar"},
      {code: "RE",  name: "Réunion"},
      {code: "RO",  name: "Romania"},
      {code: "RS",  name: "Serbia"},
      {code: "RU",  name: "Russian Federation"},
      {code: "RW",  name: "Rwanda"},
      {code: "SA",  name: "Saudi Arabia"},
      {code: "SB",  name: "Solomon Islands"},
      {code: "SC",  name: "Seychelles"},
      {code: "SD",  name: "Sudan"},
      {code: "SE",  name: "Sweden"},
      {code: "SG",  name: "Singapore"},
      {code: "SH",  name: "Saint Helena, Ascension and Tristan da Cunha"},
      {code: "SI",  name: "Slovenia"},
      {code: "SJ",  name: "Svalbard and Jan Mayen"},
      {code: "SK",  name: "Slovakia"},
      {code: "SL",  name: "Sierra Leone"},
      {code: "SM",  name: "San Marino"},
      {code: "SN",  name: "Senegal"},
      {code: "SO",  name: "Somalia"},
      {code: "SR",  name: "Suriname"},
      {code: "SS",  name: "South Sudan",  name: "2011",  name: ".ss"},
      {code: "ST",  name: "Sao Tome and Principe"},
      {code: "SV",  name: "El Salvador"},
      {code: "SX",  name: "Sint Maarten (Dutch part)"},
      {code: "SY",  name: "Syrian Arab Republic"},
      {code: "SZ",  name: "Swaziland"},
      {code: "TC",  name: "Turks and Caicos Islands"},
      {code: "TD",  name: "Chad"},
      {code: "TF",  name: "French Southern Territories"},
      {code: "TG",  name: "Togo"},
      {code: "TH",  name: "Thailand"},
      {code: "TJ",  name: "Tajikistan"},
      {code: "TK",  name: "Tokelau"},
      {code: "TL",  name: "Timor-Leste"},
      {code: "TM",  name: "Turkmenistan"},
      {code: "TN",  name: "Tunisia"},
      {code: "TO",  name: "Tonga"},
      {code: "TR",  name: "Turkey"},
      {code: "TT",  name: "Trinidad and Tobago"},
      {code: "TV",  name: "Tuvalu"},
      {code: "TW",  name: "Taiwan, Province of China"},
      {code: "TZ",  name: "Tanzania, United Republic of"},
      {code: "UA",  name: "Ukraine"},
      {code: "UG",  name: "Uganda"},
      {code: "UM",  name: "United States Minor Outlying Islands"},
      {code: "US",  name: "United States"},
      {code: "UY",  name: "Uruguay"},
      {code: "UZ",  name: "Uzbekistan"},
      {code: "VA",  name: "Holy See (Vatican City State)"},
      {code: "VC",  name: "Saint Vincent and the Grenadines"},
      {code: "VE",  name: "Venezuela, Bolivarian Republic of"},
      {code: "VG",  name: "Virgin Islands, British"},
      {code: "VI",  name: "Virgin Islands, U.S."},
      {code: "VN",  name: "Viet Nam"},
      {code: "VU",  name: "Vanuatu"},
      {code: "WF",  name: "Wallis and Futuna"},
      {code: "WS",  name: "Samoa"},
      {code: "YE",  name: "Yemen"},
      {code: "YT",  name: "Mayotte"},
      {code: "ZA",  name: "South Africa"},
      {code: "ZM",  name: "Zambia"},
      {code: "ZW",  name: "Zimbabwe"}
    ]
  end

  def self.language_families
    [
      "northwest caucasian" => [
        {
          name: "Abkhaz",
          native: "аҧсуа бызшәа, аҧсшәа",
          code: "AB"
        },
      ],
      "afro-asiatic" => [
        {
          name: "Afar",
          native: "Afaraf",
          code: "AA"
        },
        {
          name: "Amharic",
          native: "አማርኛ",
          code: "AM"
        },
        {
          name: "Arabic",
          native: "العربية",
          code: "AR"
        },
        {
          name: "Hausa",
          native: "Hausa, هَوُسَ",
          code: "HA"
        },
        {
          name: "Hebrew (modern)",
          native: "עברית",
          code: "HE"
        },
        {
          name: "Maltese",
          native: "Malti",
          code: "MT"
        },
        {
          name: "Oromo",
          native: "Afaan Oromoo",
          code: "OM"
        },
        {
          name: "Somali",
          native: "Soomaaliga, af Soomaali",
          code: "SO"
        },
        {
          name: "Tigrinya",
          native: "ትግርኛ",
          code: "TI"
        },
      ],
      "indo-european" => [
        {
          name: "Afrikaans",
          native: "Afrikaans",
          code: "AF"
        },
        {
          name: "Albanian",
          native: "gjuha shqipe",
          code: "SQ"
        },
        {
          name: "Aragonese",
          native: "aragonés",
          code: "AN"
        },
        {
          name: "Armenian",
          native: "Հայերեն",
          code: "HY"
        },
        {
          name: "Assamese",
          native: "অসমীয়া",
          code: "AS"
        },
        {
          name: "Avestan",
          native: "avesta",
          code: "AE"
        },
        {
          name: "Belarusian",
          native: "беларуская мова",
          code: "BE"
        },
        {
          name: "Bengali; Bangla",
          native: "বাংলা",
          code: "BN"
        },
        {
          name: "Bihari",
          native: "भोजपुरी",
          code: "BH"
        },
        {
          name: "Bosnian",
          native: "bosanski jezik",
          code: "BS"
        },
        {
          name: "Breton",
          native: "brezhoneg",
          code: "BR"
        },
        {
          name: "Bulgarian",
          native: "български език",
          code: "BG"
        },
        {
          name: "Catalan; Valencian",
          native: "català, valencià",
          code: "CA"
        },
        {
          name: "Cornish",
          native: "Kernewek",
          code: "KW"
        },
        {
          name: "Corsican",
          native: "corsu, lingua corsa",
          code: "CO"
        },
        {
          name: "Croatian",
          native: "hrvatski jezik",
          code: "HR"
        },
        {
          name: "Czech",
          native: "čeština, český jazyk",
          code: "CS"
        },
        {
          name: "Danish",
          native: "dansk",
          code: "DA"
        },
        {
          name: "Dutch",
          native: "Nederlands, Vlaams",
          code: "NL"
        },
        {
          name: "English",
          native: "English",
          code: "EN"
        },
        {
          name: "Faroese",
          native: "føroyskt",
          code: "FO"
        },
        {
          name: "French",
          native: "français",
          code: "FR"
        },
        {
          name: "Galician",
          native: "galego",
          code: "GL"
        },
        {
          name: "German",
          native: "Deutsch",
          code: "DE"
        },
        {
          name: "Greek, Modern",
          native: "ελληνικά",
          code: "EL"
        },
        {
          name: "Gujarati",
          native: "ગુજરાતી",
          code: "GU"
        },
        {
          name: "Hindi",
          native: "हिन्दी, हिंदी",
          code: "HI"
        },
        {
          name: "Irish",
          native: "Gaeilge",
          code: "GA"
        },
        {
          name: "Icelandic",
          native: "Íslenska",
          code: "IS"
        },
        {
          name: "Italian",
          native: "italiano",
          code: "IT"
        },
        {
          name: "Kashmiri",
          native: "كشميري",
          code: "KS"
        },
        {
          name: "Kurdish",
          native: "كوردی",
          code: "KU"
        },
        {
          name: "Latin",
          native: "latine, lingua latina",
          code: "LA"
        },
        {
          name: "Luxembourgish, Letzeburgesch",
          native: "Lëtzebuergesch",
          code: "LB"
        },
        {
          name: "Limburgish, Limburgan, Limburger",
          native: "Limburgs",
          code: "LI"
        },
        {
          name: "Lithuanian",
          native: "lietuvių kalba",
          code: "LT"
        },
        {
          name: "Latvian",
          native: "latviešu valoda",
          code: "LV"
        },
        {
          name: "Manx",
          native: "Gaelg, Gailck",
          code: "GV"
        },
        {
          name: "Macedonian",
          native: "македонски јазик",
          code: "MK"
        },
        {
          name: "Marathi (Marāṭhī)",
          native: "मराठी",
          code: "MR"
        },
        {
          name: "Norwegian Bokmål",
          native: "Norsk bokmål",
          code: "NB"
        },
        {
          name: "Nepali",
          native: "नेपाली",
          code: "NE"
        },
        {
          name: "Norwegian Nynorsk",
          native: "Norsk nynorsk",
          code: "NN"
        },
        {
          name: "Norwegian",
          native: "Norsk",
          code: "NO"
        },
        {
          name: "Occitan",
          native: "occitan, lenga d'òc",
          code: "OC"
        },
        {
          name: "Old Slavonic",
          native: "ѩзыкъ словѣньскъ",
          code: "CU"
        },
        {
          name: "Ossetian, Ossetic",
          native: "ирон æвзаг",
          code: "OS"
        },
        {
          name: "Panjabi, Punjabi",
          native: "پنجابی",
          code: "PA"
        },
        {
          name: "Pāli",
          native: "पाऴि",
          code: "PI"
        },
        {
          name: "Persian (Farsi)",
          native: "فارسی",
          code: "FA"
        },
        {
          name: "Polish",
          native: "język polski, polszczyzna",
          code: "PL"
        },
        {
          name: "Pashto, Pushto",
          native: "پښتو",
          code: "PS"
        },
        {
          name: "Portuguese",
          native: "português",
          code: "PT"
        },
        {
          name: "Romansh",
          native: "rumantsch grischun",
          code: "RM"
        },
        {
          name: "Romanian, )",
          native: "limba română",
          code: "RO"
        },
        {
          name: "Russian",
          native: "русский язык",
          code: "RU"
        },
        {
          name: "Sanskrit (Saṁskṛta)",
          native: "संस्कृतम्",
          code: "SA"
        },
        {
          name: "Sardinian",
          native: "sardu",
          code: "SC"
        },
        {
          name: "Sindhi",
          native: "سنڌي، سندھی",
          code: "SD"
        },
        {
          name: "Serbian",
          native: "српски језик",
          code: "SR"
        },
        {
          name: "Scottish Gaelic; Gaelic",
          native: "Gàidhlig",
          code: "GD"
        },
        {
          name: "Sinhala, Sinhalese",
          native: "සිංහල",
          code: "SI"
        },
        {
          name: "Slovak",
          native: "slovenčina, slovenský jazyk",
          code: "SK"
        },
        {
          name: "Slovene",
          native: "slovenski jezik, slovenščina",
          code: "SL"
        },
        {
          name: "Spanish; Castilian",
          native: "español, castellano",
          code: "ES"
        },
        {
          name: "Swedish",
          native: "Svenska",
          code: "SV"
        },
        {
          name: "Tajik",
          native: "تاجیکی",
          code: "TG"
        },
        {
          name: "Ukrainian",
          native: "українська мова",
          code: "UK"
        },
        {
          name: "Urdu",
          native: "اردو",
          code: "UR"
        },
        {
          name: "Walloon",
          native: "walon",
          code: "WA"
        },
        {
          name: "Welsh",
          native: "Cymraeg",
          code: "CY"
        },
        {
          name: "Western Frisian",
          native: "Frysk",
          code: "FY"
        },
        {
          name: "Yiddish",
          native: "ייִדיש",
          code: "YI"
        },
      ],
      "niger–congo" => [
        {
          name: "Akan",
          native: "Akan",
          code: "AK"
        },
        {
          name: "Bambara",
          native: "bamanankan",
          code: "BM"
        },
        {
          name: "Chichewa; Chewa; Nyanja",
          native: "chiCheŵa, chinyanja",
          code: "NY"
        },
        {
          name: "Ewe",
          native: "Eʋegbe",
          code: "EE"
        },
        {
          name: "Fula; Fulah; Pulaar; Pular",
          native: "Fulfulde, Pulaar, Pular",
          code: "FF"
        },
        {
          name: "Herero",
          native: "Otjiherero",
          code: "HZ"
        },
        {
          name: "Igbo",
          native: "Asụsụ Igbo",
          code: "IG"
        },
        {
          name: "Kikuyu, Gikuyu",
          native: "Gĩkũyũ",
          code: "KI"
        },
        {
          name: "Kinyarwanda",
          native: "Ikinyarwanda",
          code: "RW"
        },
        {
          name: "Kongo",
          native: "KiKongo",
          code: "KG"
        },
        {
          name: "Kwanyama, Kuanyama",
          native: "Kuanyama",
          code: "KJ"
        },
        {
          name: "Ganda",
          native: "Luganda",
          code: "LG"
        },
        {
          name: "Lingala",
          native: "Lingála",
          code: "LN"
        },
        {
          name: "Luba-Katanga",
          native: "Tshiluba",
          code: "LU"
        },
        {
          name: "North Ndebele",
          native: "isiNdebele",
          code: "ND"
        },
        {
          name: "Ndonga",
          native: "Owambo",
          code: "NG"
        },
        {
          name: "South Ndebele",
          native: "isiNdebele",
          code: "NR"
        },
        {
          name: "Kirundi",
          native: "Ikirundi",
          code: "RN"
        },
        {
          name: "Shona",
          native: "chiShona",
          code: "SN"
        },
        {
          name: "Southern Sotho",
          native: "Sesotho",
          code: "ST"
        },
        {
          name: "Swahili",
          native: "Kiswahili",
          code: "SW"
        },
        {
          name: "Swati",
          native: "SiSwati",
          code: "SS"
        },
        {
          name: "Tswana",
          native: "Setswana",
          code: "TN"
        },
        {
          name: "Tsonga",
          native: "Xitsonga",
          code: "TS"
        },
        {
          name: "Twi",
          native: "Twi",
          code: "TW"
        },
        {
          name: "Venda",
          native: "Tshivenḓa",
          code: "VE"
        },
        {
          name: "Wolof",
          native: "Wollof",
          code: "WO"
        },
        {
          name: "Xhosa",
          native: "isiXhosa",
          code: "XH"
        },
        {
          name: "Yoruba",
          native: "Yorùbá",
          code: "YO"
        },
        {
          name: "Zulu",
          native: "isiZulu",
          code: "ZU"
        },
      ],
      "northeast caucasian" => [
        {
          name: "Avaric",
          native: "авар мацӀ, магӀарул мацӀ",
          code: "AV"
        },
        {
          name: "Chechen",
          native: "нохчийн мотт",
          code: "CE"
        },
      ],
      "aymaran" => [
        {
          name: "Aymara",
          native: "aymar aru",
          code: "|AY"
        },
      ],
      "turkic" => [
        {
          name: "Azerbaijani",
          native: "azərbaycan dili",
          code: "AZ"
        },
        {
          name: "Bashkir",
          native: "башҡорт теле",
          code: "BA"
        },
        {
          name: "Chuvash",
          native: "чӑваш чӗлхи",
          code: "CV"
        },
        {
          name: "Kazakh",
          native: "қазақ тілі",
          code: "KK"
        },
        {
          name: "Kyrgyz",
          native: "Кыргызча, Кыргыз тили",
          code: "KY"
        },
        {
          name: "South Azerbaijani",
          native: "تورکجه",
          code: "AZ"
        },
        {
          name: "Turkmen",
          native: "Türkmen, Түркмен",
          code: "TK"
        },
        {
          name: "Turkish",
          native: "Türkçe",
          code: "TR"
        },
        {
          name: "Tatar",
          native: "tatar tele",
          code: "TT"
        },
        {
          name: "Uyghur, Uighur",
          native: "ئۇيغۇرچە",
          code: "UG"
        },
        {
          name: "Uzbek",
          native: "أۇزبېك",
          code: "UZ"
        },
      ],
      "language isolate" => [
        {
          name: "Basque",
          native: "euskara, euskera",
          code: "EU"
        },
        {
          name: "Korean",
          native: "朝鮮語",
          code: "KO"
        },
      ],
      "creole" => [
        {
          name: "Bislama",
          native: "Bislama",
          code: "BI"
        },
        {
          name: "Haitian; Haitian Creole",
          native: "Kreyòl ayisyen",
          code: "HT"
        },
        {
          name: "Sango",
          native: "yângâ tî sängö",
          code: "SG"
        },
      ],
      "sino-tibetan" => [
        {
          name: "Burmese",
          native: "ဗမာစာ",
          code: "MY"
        },
        {
          name: "Chinese",
          native: "漢語",
          code: "ZH"
        },
        {
          name: "Dzongkha",
          native: "རྫོང་ཁ",
          code: "DZ"
        },
        {
          name: "Nuosu",
          native: "ꆈꌠ꒿ Nuosuhxop",
          code: "II"
        },
        {
          name: "Tibetan Standard, Tibetan, Central",
          native: "བོད་ཡིག",
          code: "BO"
        },
      ],
      "austronesian" => [
        {
          name: "Chamorro",
          native: "Chamoru",
          code: "CH"
        },
        {
          name: "Fijian",
          native: "vosa Vakaviti",
          code: "FJ"
        },
        {
          name: "Hiri Motu",
          native: "Hiri Motu",
          code: "HO"
        },
        {
          name: "Indonesian",
          native: "Bahasa Indonesia",
          code: "ID"
        },
        {
          name: "Javanese",
          native: "basa Jawa",
          code: "JV"
        },
        {
          name: "Malagasy",
          native: "fiteny malagasy",
          code: "MG"
        },
        {
          name: "Malay",
          native: "بهاس ملايو",
          code: "MS"
        },
        {
          name: "Māori",
          native: "te reo Māori",
          code: "MI"
        },
        {
          name: "Marshallese",
          native: "Kajin M̧ajeļ",
          code: "MH"
        },
        {
          name: "Nauru",
          native: "Ekakairũ Naoero",
          code: "NA"
        },
        {
          name: "Samoan",
          native: "gagana fa'a Samoa",
          code: "SM"
        },
        {
          name: "Sundanese",
          native: "Basa Sunda",
          code: "SU"
        },
        {
          name: "Tagalog",
          native: "Wikang Tagalog",
          code: "TL"
        },
        {
          name: "Tonga (Tonga Islands)",
          native: "faka Tonga",
          code: "TO"
        },
        {
          name: "Tahitian",
          native: "Reo Tahiti",
          code: "TY"
        },
      ],
      "algonquian" => [
        {
          name: "Cree",
          native: "ᓀᐦᐃᔭᐍᐏᐣ",
          code: "CR"
        },
        {
          name: "Ojibwe, Ojibwa",
          native: "ᐊᓂᔑᓈᐯᒧᐎᓐ",
          code: "OJ"
        },
      ],
      "constructed" => [
        {
          name: "Esperanto",
          native: "Esperanto",
          code: "EO"
        },
        {
          name: "Interlingua",
          native: "Interlingua",
          code: "IA"
        },
        {
          name: "Interlingue",
          native: "Occidental",
          code: "IE"
        },
        {
          name: "Ido",
          native: "Ido",
          code: "IO"
        },
        {
          name: "Volapük",
          native: "Volapük",
          code: "VO"
        },
      ],
      "uralic" => [
        {
          name: "Estonian",
          native: "eesti, eesti keel",
          code: "ET"
        },
        {
          name: "Finnish",
          native: "suomi, suomen kieli",
          code: "FI"
        },
        {
          name: "Hungarian",
          native: "magyar",
          code: "HU"
        },
        {
          name: "Komi",
          native: "коми кыв",
          code: "KV"
        },
        {
          name: "Northern Sami",
          native: "Davvisámegiella",
          code: "SE"
        },
      ],
      "south caucasian" => [
        {
          name: "Georgian",
          native: "ქართული",
          code: "KA"
        },
      ],
      "tupian" => [
        {
          name: "Guaraní",
          native: "Avañe'ẽ",
          code: "GN"
        },
      ],
      "eskimo–aleut" => [
        {
          name: "Inupiaq",
          native: "Iñupiaq, Iñupiatun",
          code: "IK"
        },
        {
          name: "Inuktitut",
          native: "ᐃᓄᒃᑎᑐᑦ",
          code: "IU"
        },
        {
          name: "Kalaallisut, Greenlandic",
          native: "kalaallisut, kalaallit oqaasii",
          code: "KL"
        },
      ],
      "japonic" => [
        {
          name: "Japanese",
          native: "にほんご",
          code: "JA"
        },
      ],
      "dravidian" => [
        {
          name: "Kannada",
          native: "ಕನ್ನಡ",
          code: "KN"
        },
        {
          name: "Malayalam",
          native: "മലയാളം",
          code: "ML"
        },
        {
          name: "Tamil",
          native: "தமிழ்",
          code: "TA"
        },
        {
          name: "Telugu",
          native: "తెలుగు",
          code: "TE"
        },
      ],
      "nilo-saharan" => [
        {
          name: "Kanuri",
          native: "Kanuri",
          code: "KR"
        },
      ],
      "austroasiatic" => [
        {
          name: "Khmer",
          native: "ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ",
          code: "KM"
        },
        {
          name: "Vietnamese",
          native: "Tiếng Việt",
          code: "VI"
        },
      ],
      "tai–kadai" => [
        {
          name: "Lao",
          native: "ພາສາລາວ",
          code: "LO"
        },
        {
          name: "Thai",
          native: "ไทย",
          code: "TH"
        },
        {
          name: "Zhuang, Chuang",
          native: "Saɯ cueŋƅ, Saw cuengh",
          code: "ZA"
        },
      ],
      "mongolic" => [
        {
          name: "Mongolian",
          native: "монгол",
          code: "MN"
        },
      ],
      "dené–yeniseian" => [
        {
          name: "Navajo, Navaho",
          native: "Diné bizaad, Dinékʼehǰí",
          code: "NV"
        },
      ],
      "india-asia" => [
        {
          name: "Oriya",
          native: "ଓଡ଼ିଆ",
          code: "OR"
        },
      ],
      "quechuan" => [
        {
          name: "Quechua",
          native: "Runa Simi, Kichwa",
          code: "QU"
        },
      ],
    ]
  end

end